﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                    xmlns:local="clr-namespace:Microsoft.Windows.Controls"
                    xmlns:chrome="clr-namespace:Microsoft.Windows.Controls.Chromes"
                    xmlns:coreConverters="clr-namespace:Microsoft.Windows.Controls.Core.Converters">

    <coreConverters:InverseBoolConverter x:Key="InverseBoolConverter" />

    <DataTemplate x:Key="DefaultWatermarkTemplate">
        <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False" />
    </DataTemplate>
    
    <LinearGradientBrush x:Key="PopupDarkBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FFA3AEB9" Offset="0"/>
        <GradientStop Color="#FF8399A9" Offset="0.375"/>
        <GradientStop Color="#FF718597" Offset="0.375"/>
        <GradientStop Color="#FF617584" Offset="1"/>
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="PopupBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
        <LinearGradientBrush.GradientStops>
            <GradientStopCollection>
                <GradientStop Offset="0" Color="#FFffffff"/>
                <GradientStop Offset="1" Color="#FFE8EBED"/>
            </GradientStopCollection>
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <Style x:Key="DateTimePickerToggleButtonStyle" TargetType="ToggleButton">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <Grid SnapsToDevicePixels="True">
                        <chrome:ButtonChrome x:Name="ToggleButtonChrome"
                                             CornerRadius="0,2.75,2.75,0"
                                             RenderChecked="{Binding IsOpen, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:DateTimePicker}}"
                                             RenderEnabled="{Binding IsEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:DateTimePicker}}"
											 RenderMouseOver="{TemplateBinding IsMouseOver}"
											 RenderPressed="{TemplateBinding IsPressed}" >

                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>

                                <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />

                                <Grid x:Name="arrowGlyph" IsHitTestVisible="False" Grid.Column="1" Margin="5">
                                    <Path Width="7" Height="4" Data="M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z" Fill="#FF000000"/>
                                </Grid>
                            </Grid>
                        </chrome:ButtonChrome>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!-- =============================================================================== -->
    <!-- DateTimePicker                                                                  -->
    <!-- =============================================================================== -->

    <Style TargetType="{x:Type local:DateTimePicker}">
        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Focusable" Value="False" />
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>
        <Setter Property="HorizontalContentAlignment" Value="Right" />
        <Setter Property="TextAlignment" Value="Right" />
        <Setter Property="TimeWatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
        <Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:DateTimePicker}">
                    <Border>
                        <Grid>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <local:ButtonSpinner x:Name="Spinner" IsTabStop="False" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}"
                                         AllowSpin="{TemplateBinding AllowSpin}" ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}">
                                    <local:WatermarkTextBox x:Name="TextBox" BorderThickness="0" 
                                                Background="Transparent"
                                                FontFamily="{TemplateBinding FontFamily}" 
                                                FontSize="{TemplateBinding FontSize}" 
                                                FontStretch="{TemplateBinding FontStretch}"
                                                FontStyle="{TemplateBinding FontStyle}" 
                                                FontWeight="{TemplateBinding FontWeight}" 
                                                Foreground="{TemplateBinding Foreground}" 
                                                HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}"
                                                MinWidth="20" AcceptsReturn="False" 
                                                Padding="0"
                                                TextAlignment="{TemplateBinding TextAlignment}"
                                                TextWrapping="NoWrap" 
                                                TabIndex="{TemplateBinding TabIndex}"
                                                Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}"
                                                Watermark="{TemplateBinding Watermark}"
                                                WatermarkTemplate="{TemplateBinding WatermarkTemplate}"/>
                                </local:ButtonSpinner>
                                <ToggleButton x:Name="_calendarToggleButton" Grid.Column="1" Background="White"
                                              IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}"
                                              Style="{StaticResource DateTimePickerToggleButtonStyle}"
                                              IsHitTestVisible="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}"
                                              IsEnabled="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" />
                            </Grid>
                            <Popup IsOpen="{Binding IsChecked, ElementName=_calendarToggleButton}" StaysOpen="False">
                                <Border BorderThickness="1" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupDarkBorderBrush}" Padding="3">
                                    <StackPanel>
                                        <Calendar x:Name="Part_Calendar" BorderThickness="0" />
                                        <local:TimePicker x:Name="Part_TimeUpDown" 
                                                          Format="{TemplateBinding TimeFormat}"
                                                          FormatString="{TemplateBinding TimeFormatString}"
                                                          Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}"
                                                          Watermark="{TemplateBinding TimeWatermark}"
                                                          WatermarkTemplate="{TemplateBinding TimeWatermarkTemplate}"/>
                                    </StackPanel>
                                </Border>
                            </Popup>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>